Knowledge-based polymorph undockable toolbar

ABSTRACT

A software control method and apparatus for implementing a knowledge-based polymorph undockable toolbar within an object scene. The undockable toolbar can be used to perform actions on objects created and managed by computer software applications. A knowledge-based polymorph undockable toolbar can merges into a relatively small area, tools for executing various commands that would require substantial screen space if represented by standard icons on a toolbar. The present invention can be used to manipulate non-constrained objects or groups of objects included in an assembly that are linked to each other by constraints. The knowledge based polymorph undockable toolbar can also act to reduce the number of user interactions needed to perform a manipulation task.

BACKGROUND

The present invention relates to computer software utility programs, andmore specifically to performance of actions on objects in softwaresystems having a graphical interface.

Performance of actions on objects can require acting directly on one ormore characteristics of an object. Individual devices available to auser for acting on object characteristics have limited capabilities, forexample, moving the mouse can only act simultaneously on two independentcharacteristics, an X and Y axis.

To modify a greater number of characteristics a user will have tosubdivide the global modification into a succession of elementarymanipulations involving a number of characteristics, each characteristiccompatible with the capabilities of an available device. To achieve adesired overall manipulation, a user may need to interact with severaldevices (keyboard, mouse buttons, joysticks, touchpads, etc.) and/orwith other elements of a user interface (command buttons, menu items,dialog boxes items, handles, etc.) to move from one elementarymanipulation to the next.

In some existing software applications, a number of displacement actionscan be controlled by different buttons on a toolbar. Activating onebutton will cause the corresponding type of displacement to be appliedto the objects in the scene. The drawback of this is that the user hasto constantly move to and from a toolbar and the selected object.

Other existing software applications provide for handles to appeararound an object to be displaced. Performance of actions on an objecthas been achieved directly on the scene through manipulation of thehandles surrounding an object. The handles generally reflect the sizeand shape of the object. However, in complex arrangements, the number ofhandles on a scene and their surrounding presence around the objects canbecome a nuisance to a user trying to discern the overall objectstructure. The user can be hampered in the performance of other parallelactions. Moreover, the handles are generally oriented according to areference system which is defined by the object selection and cannot bedirectly modified in context by the user. Another drawback of suchapplications is that displaying handles may require significantprocessing time if the number of selected objects is high.

It would be useful to have a single, compact representation of aprogrammable tool which allows the user to perform several actions onselected objects in a scene.

SUMMARY OF THE INVENTION

Accordingly, the present invention provides a software control methodand apparatus for implementing a knowledge-based polymorph undockabletoolbar which can be used to perform actions on objects created andmanaged by computer software applications. A knowledge-based polymorphundockable toolbar merges into a small space tool for executing variouscommands that would require substantial screen space if represented bystandard icons on a toolbar and can be used to manipulate objects orgroups of objects. The knowledge based polymorph undockable toolbar canalso act to reduce the number of user interactions needed to perform amanipulation task.

The present invention includes a method of acting upon an objectdisplayed on a computer screen, including imbedding a software tool intoan object scene, wherein the software tool includes multiple userinteractive areas. Each area can be associated with a function foracting upon the object. A user can activate an area causing the programto perform the function associated with the activated interactive areaon the object.

Generally, in one aspect, a function performed can be responsive toknowledge based criteria relating to the object on which the function isperformed. In addition, a second software tool can be displayed in anarea of the object scene remote from the first software tool and thefirst software tool can be controlled with the second software tool.

In another aspect, the software tool can be moved off the object sceneand individual visual representations, each associated with a functionof the software tool, can be displayed. The visual representations canalso be used to execute the individual functions. In addition theindividual visual representations can be transferred back into theobject scene and morphed into the software tool.

This invention can also include manipulating a particular userinteractive area of the software tool to change the position of thesoftware tool with respect to the objects in the object scene responsiveto the manipulation of the particular user interactive area. Oneconvenient interactive area that can be used for such manipulation is atool anchor.

In one embodiment, one or more objects in the object scene can beselected and a function associated with an activated interactive areacan be executed on the objects selected.

In another aspect of the invention, a knowledge-based polymorphundockable toolbar can contain an anchor which allows a user, by asimple drag-and-drop operation, to change the reference point on anobject. A knowledge-based polymorph undockable toolbar can also be usedas a linking mechanism to connect selected objects with other objects ina scene. In one specific embodiment, a command device, such as thecontrol key on a keyboard, can be activated to effect the alignment.

In another specific embodiment, a computer system software tool forfacilitating positioning of a selected object on a computer screen caninclude three axis, each axis perpendicular to one another wherein eachaxis controls translational movement of the object. In addition thisembodiment can include three arcs, each arc intersecting two axis, andwherein each arc controls rotational movement of the object and threeplanes, wherein each plane is defined by the intersection of two axisand each plane controls planar movement of the object. The software toolcan also include an anchor for attaching the tool to the object and afree rotation handle.

In one aspect of the invention, a tool anchored to an object canmanipulate the position of the attached object responsive to actuationof the tool. An unanchored tool can manipulate all objects displayed onthe screen responsive to actuation of the tool.

In addition, the software tool can be aligned with an absolute axis orpositioned and oriented onto an object such that the object can bedirectly manipulated by activation of the tool. In one embodiment, theposition and orientation of the tool can be determined by contextsensitive, semantical object interpretation. In addition, an axisindicator can cause an axis associated with an indicator to beperpendicular to the screen.

This invention can also embody a computer system, a programmed computer,a computer program residing on a computer-readable medium or a method ofinteracting with a computer and embodying the concepts described above.

The details of one or more embodiments of the invention are set forth inthe accompanying drawings and the description below. Implementations canprovide advantages such as the capability of efficiently manipulatingobjects in an object scene. Other features, objects, and advantages ofthe invention will be apparent from the description, the drawings andthe claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an exemplary illustration of a knowledge-based polymorphundockable toolbar Compass and associated icons according to thisinvention.

FIG. 2 is an illustration of a knowledge-based polymorph undockabletoolbar in an object scene.

FIG. 3 is an illustration of an unattached GUI Compass.

FIG. 4 is an illustration of movement resultant from an unattached GUICompass.

FIG. 5 illustrates movement caused by dragging an YZ arc.

FIG. 6 illustrates movement caused by dragging a ZY plane.

FIG. 7 illustrates rotational movement caused by dragging a rotationalhandle.

FIG. 8 illustrates an axis becoming perpendicular to the computer screenafter selecting the axis letter designation.

FIG. 9 illustrate anchoring a 3-Compass to an object.

FIG. 10 illustrates movement caused by dragging the axis of an anchoredcompass.

FIG. 11 illustrates a repositioned planar patch following Z translation.

FIG. 12 illustrates alignment of a knowledge-based polymorph undockabletoolbar compass with an object edge.

FIG. 13 illustrates using a knowledge-based polymorph undockable toolbarcompass as a temporary reference axis.

FIG. 14 illustrates an anchored compass.

FIG. 15 illustrates a manipulator in conjunction with an object.

FIG. 16 illustrates a compass dragged onto a planar patch.

FIG. 17 illustrates a compass oriented according to the orientation of aplanar patch.

FIG. 18 illustrates a compass reoriented with a privilege plane selectedfrom a menu.

FIG. 19 illustrates the YZ selected as the privileged plane for thecompass.

FIG. 20 illustrates a knowledge-based polymorph undockable toolbarcompass attached to a rectangular patch.

FIG. 21 illustrates alignment during knowledge based translation of anobject.

FIG. 22 illustrates translation effected using knowledge basedtranslation.

FIG. 23 illustrates alignment during non knowledge-based translation.

FIG. 24 illustrates translation effected using non knowledge basedtranslation.

FIG. 25 is a block diagram of a computer system.

DETAILED DESCRIPTION OF THE INVENTION

A computer system can display one or more objects in an object scene ona computer display. A user accessing the computer system can select oneor more of the objects and perform an action on the selected objects. Tofacilitate the performance of an action on an object, a multi-functionaltool can be displayed in the object scene. The multi-function tool caninclude two or more user interactive areas responsive to selection witha pointing device. Each user interactive area can be programmed toperform a predetermined action upon activation by the user. In addition,a predetermined action can be knowledge based, such that it is furtherdefined according to the context of the scene in which the action is tocalled to be performed.

Generally, a knowledge-based polymorph undockable tool bar can berepresented in the scene of an object display window in the form of amultifaceted tool, wherein each facet of the tool represents a differentfunctionality. The tool embodies a compact representation of multiplefunctionalities that can be located in close proximity to an object onwhich the functionality will be exercised. Each functionality of thetool is designed to effect a change on one or more objects of the scenein which the tool has been immersed. Immersion of the tool in the scene,allows the tool to behave like other objects of the scene in manyrespects. For example, as the view of the scene is changed throughrotation or transactional movement of the view, the view of the toolimmersed in the scene will change accordingly.

In one embodiment, a remote control of a tool that is immersed in anobject scene can be made to appear in a portion of the scene that isotherwise vacant. The remote control can be used to access thefunctionality of a knowledge based polymorph undockable tool bar that isimmersed in a scene and has become difficult to view or otherwise beaccessed. Difficulty in accessing an undockable toolbar can be, forexample, the result of a scene crowded with objects or movement of anobject with the undockable toolbar attached to an inaccessible area ofthe scene. In one referred embodiment, the location of the remotecontrol is in the upper right hand corner of the scene.

In addition, icons or other visual representations of functionalitiesperformable by the tool can be displayed as separate commands in aportion of the screen outside the object scene. The separate commandscan be displayed for example by dragging and dropping a multi-functionaltool on a side bar of the screen wherein a toolbar can appear asseparate icons, each icon representing a functionality present in theknowledge based polymorph undockable toolbar. Similarly, a multi-icontoolbar peripheral to the object scene can be programmed such thatdragging the toolbar into the object window causes the individualselections of the toolbar to be morphed into a single multi-functionaltoolbar that is immersed in the object scene.

Optionally, a knowledge based polymorph undockable toolbar immersed inan object scene, can be anchored or otherwise attached to one or moreobjects contained in the object scene. Activation of a user interactiveportion of the undockable toolbar can cause an function associated withthat portion of the toolbar to be performed on the selected objects.

Each object displayed in the object scene, can have a default anchorpoint onto which a knowledge based polymorph undockable toolbar canattach. A user can drag and drop, or otherwise move, the undockabletoolbar to the object and upon release the undockable toolbar willanchor to the default anchor point. In addition, a user can override thedefault and attach the undockable toolbar to an alternate anchor pointselected by the user. The anchor point can define a reference for actionto be performed upon the object. In addition, activation of anundockable toolbar function, such as a function causing movement in anobject, can be combined with the activation of a command key, or othercontrol device, to create a link between objects. Command keys caninclude for example, depressing the Control key on a keyboard.

Links created between objects can also be knowledge based programmedsuch that they are defined in the context of the objects or theapplication. For example, two pipes that are linked may be programmedsuch that a predetermined link attaches the pipes at the extremities.Similarly, an electrical connector can be programmed to align with areceptacle.

Knowledge based polymorph undockable toolbar functionality can includefor example, translational movement, rotational movement, planarmovement, aperture creation, distant measuring devices,appendage,creation, or any other tool that can be programmed to takeaction within the object scene.

Referring now to FIG. 1, one example of a knowledge-based polymorphundockable toolbar can include a GUI Compass tool. A compass tool can bedisplayed on a computer screen and used to manipulate objects alsodisplayed on the screen. The Compass can include multiple userinteractive areas or parts for causing an action to be effected on oneor more objects displayed on the computer screen. For example,interactive parts of the Compass can include a manipulation handle oranchor 101, and a free rotation handle 102. Compass arcs intersectingthe various axis such as an XY arc 121 intersecting the X and Y axis, aZY arc 122 intersecting the Z and Y axis, and a ZX arc 123 intersectingthe Z and X axis can also be included.

Selection of an axis with a pointing device can cause an associatedobject, or multiple objects to move translationally in the direction ofthe axis. Similarly, selection of an arc can cause an associated objector objects to move rotationally in the direction specified by the arc.

A plane defined by the intersection of an arc 121-123 and two of theaxis 110-112 can also be used for object manipulation. Activation of aplane can cause objects associated with the compass to move along thedirection of the plane activated. A privileged plane can also bedesignated. In one preferred embodiment the privileged plane is the XYplane 131 which contains the anchor 101. Other planes that can bespecified as the privilege plane include the ZY plane 132 and the ZXplane 133.

In one embodiment, icons 161-163 located on a toolbar 160 can effect anaction the same as the action caused by user activation of a part of thecompass. For example, an icon for causing translational movement 161 caneffect a similar action as activating an axis 110-112 on the Compasstool 100, an icon for causing rotation 162 can effect a similar actionas activating an arc 121-123 on the Compass tool 100 and an icon 163 forcausing planar movement 163 can effect a similar action as activating aplane 131-133 on the Compass tool.

Referring now to FIG. 2, a computer display 200 can include an objectscene 220 and one or more toolbars 204, with each toolbar 204 containingone or more icons 205. The object scene can include an absolute axis 210to aid in orienting objects, such as the block 206. The object scene canalso include a knowledge-based polymorph undockable toolbar, such as aGUI Compass 201 & 202.

A Compass 202 can have a default position such as the upper right handcorner of the screen. As an object 206 in the scene is selected, a GUICompass 201 can be located in close proximity to the object 206selected. In another embodiment, the anchor can be located on a closestgeometrical point as defined by the location of the cursor, for examplean extremity of a line. In still another embodiment, as illustrated inFIG. 2, the Compass 201 is positioned such that the anchor 101 islocated at the center of gravity of the object selected.

The anchor can also be located at a point which is defined by the objectitself. In one preferred embodiment, the compass can attempt recognizethe characteristics of the current object. Characteristics can take intoaccount the context of the current object and check for the highestsemantical information. Anchor points indicated by semanticalinformation can be defined by the software or the user.

Anchoring the GUI Compass to an object allows a user to move the objectwith translation and rotation movements. Movement in this contextincludes redefining the spatial coordinates of the object with respectto the absolute axis system of the document. In still another embodimentthe Compass can be permanently displayed in a comer of the window andused as a remote control for a Compass on an object.

The screen can also include an intrinsic X axis 110, Y axis 111 and Zaxis 112, each axis being representative of a dimension and functionalfor translational movement.

Referring now to FIG. 3, in one embodiment, the GUI Compass can remainunattached to any particular object in the document. An unattached GUICompass can, by default, be identically aligned with an absolute axis210. The absolute axis 210 is typically located at the lower right handcorner of the screen. All objects included in the document will move inunison responsive to movement of an unattached GUI Compass. Referringagain to FIG. 3 this would include objects 315 and 316.

Referring now to FIG. 4, the Compass 100 has remained in the samerelative position to the objects 315 and 316. As illustrated, movementof an unattached GUI Compass causes all elements of the document to movein unison.

Different movements can be imparted by selection and dragging of thedifferent components making up the GUI Compass 100. As a cursor isdragged over a part of a GUI Compass, the cursor can change in physicalappearance. Changes in physical appearance can include for example analternate cursor shape or color. In one embodiment, cursor appearancecan include a pointed finger that appears as the cursor is moved over anelement or part of a GUI Compass. In addition, the elements of a Compasscan be highlighted as they are pointed to. Elements can include aCompass axis, an arc on the plane of the Compass, or the plane of theCompass itself.

Referring now to FIG. 5, as an example of movement caused by the GUICompass, dragging the arc YZ to the right can rotate the objects in anarc about the X axis and through the anchor point. In one embodiment,dragging close to the anchor square can rotate the objects quickly anddragging further away from the anchor square 101 can rotate the objectsmore slowly. In addition, the absolute axis 210 can rotate responsive tothe movement of the GUI Compass.

FIG. 6 illustrates an example of moving the objects responsive todragging to the right the ZY plane 132 subtended by the arc ZY. Theobjects 315 and 316 can be moved across the screen in correlation withthe movement of the GUI Compass 100 as a result of dragging on the ZYplane 132.

Referring now to FIG. 7, selection of a free rotation handle 102 androtation of the GUI Compass 100 by dragging the rotation handle 102, cancause the objects 315 and 316 to rotate responsive to the direction thefree rotation handle 102 is dragged. Selection and movement of the freerotation handle 102 can emulate the types of movement obtainable with ajoystick, without the user having to move their hand from a pointingdevice such as a mouse.

Referring now to FIG. 8, clicking or otherwise selecting the letter ofan axis on the GUI Compass, or other axis indicator, can cause theselected axis to be perpendicular to the screen. In addition, in anotheraspect, clicking the same letter again can reverse the point from whicha user can view the objects. FIG. 8 illustrates a view of the documentcontaining objects 315 and 316 after the letter Z for the Z axis 112 hasbeen clicked or otherwise selected.

Referring now to FIG. 9, responsive to user actions associating aCompass with an object 316, a Compass can be utilized for differentfunctions. Functions can include for example, translational androtational movement of an object or connection of one object withanother object. Other functionality can also be programmed into thecompass according to user needs. An initial position of the Compass toolin relation to an object selected can be a knowledge based mechanismalso responsive to the user actions executed during object selection.

A default method of selecting an object can include dragging the compassto the object until the compass is snapped to the object. Defaultselection of an object can cause the Compass to be functional as adisplacement tool whereby the Compass operates to effect objectrelocation and reorientation. In response to default selection, theCompass anchor can be positioned at the center of gravity for theobject, and the Compass orientation can be along the inertia axis. Suchdefault settings can be used to emulate situations in the physicalworld. For example, a person in the physical world attaching one pipe toanother might reasonably grasp the first pipe at the center of gravityand orient the axis of the first pipe to be parallel with the secondpipe. The person could then apply translational movement to the firstpipe, causing the extremities of each pipe to contact. Similarly, theGUI Compass can attach at the center of gravity of an object such as316, and manipulate the selected object via the Compass tool.

An alternate method of selecting an object can include activating acommand key, such as, for example, by depressing and holding down theControl key of a keyboard associated with the computer 100, while theCompass is dragged to select an object. In one embodiment, alternativeselection can activate an advanced use of the tool with a linkmechanism, wherein the Compass can become a connection tool forgeometrical positioning and part assemblage. During such a use theCompass can be positioned and oriented to define a way of connection.For example, in an assembly context utilizing connection by contact ofone object with another, the Z axis of the Compass can be considered themain axis and be oriented tangent to a privileged direction forconnection, such as the axis of a pipe.

The selection process can involve contextual, top-down semantical objectinterpretation. The programming, controlling the object selection, cananalyze object characteristics by first determining the current contextand then referencing the highest semantical information.

Following selection of an object, the Compass can, by default, becomeimmersed in the 3-D space represented on the screen of the computer.During immersed representation, the Compass appears in close proximityto the selected object. A user can also opt for remote localizationshould the immersed representation not be easily accessible. Remotelocalization allows the compass to anchor to a selected object and becontrolled by a remote appearance of the compass, such as, for example,a compass that always appears at the upper right corner of the display.Remote localization can be useful when the complexity of objectsdisplayed makes manipulation of an immersed Compass impractical. In thecase of remote localization, the user can opt, through the use of adialog box or other user interactive device, not to display the immersedcompass.

After the Compass has anchored, only an object that is selected will beresponsive to activation of the GUI Compass. An unanchored Compass cancontrol move all objects displayed. For example, dragging the Z axis 112of the Compass while the Compass 100 is anchored to the planar patchobject 316, can move the planar patch to an opposite side of the blockobject 315. The dragging movement is illustrated in FIG. 10.

In one embodiment, the distance a selected object is moved, can bedisplayed in real time as the object is moved 1010. In a preferredembodiment, the distance is measured from the origin of the axis, theanchor square or Compass manipulation handle located at the Compassbase. The value displayed 1010, can be preceded by a negative sign ifthe object is moved in a direction opposite to the Compass orientation.Dotted lines along the X, Y and Z axis and associated valuesrepresenting the components of displacement can represent the distanceof translation. One line can represent axis translation and two linescan represent planar translation. A dotted arc and an associated anglecan represent the distance of rotation. Translation and rotationincrements can be predetermined, or user definable. FIG. 11 illustratesthe repositioned planar patch 316 following the Z direction translation.

Referring now to FIG. 12, when the anchor of a Compass is selected, theCompass can be snapped to another position and orientation of the sameselected object, or another object. The Compass can automatically alignwith the main characteristic of a part or sub-part pointed to by thecursor. Accordingly, if a sub-part can be assimilated to a point, aswhen the sub-part is a vertex, a temporary representation of a Compasscan be snapped to the point with the Compass anchor located on thispoint. If the sub-part can be assimilated to a line, as when thesub-part is an edge, the Z axis of the temporary representation can bealigned on this edge. If the sub-part can be assimilated to a plane, theXY plane of the temporary representation can be snapped on this plane.

For example, using this technique, the Compass 100 can be dragged ontothe object 315 and aligned with one of the object's edges such asillustrated in FIG. 12 wherein the Compass 100 is aligned with edge1210. The planar patch 316 can also be selected along with the object315 by holding down a control key in clicking on the planar patch 316.

Referring now to FIG. 13, during creation of an object or during objectmodification, a GUI Compass can be used as a temporary reference axis.The dissymmetry of a GUI Compass can give visual information, forexample, that recognizes the X-Y plane as a privileged plane. For threedimensional object creation or manipulation commands if the a vectoraldirection is required, the direction orthogonal to the privileged planeof the Compass can be taken.

If a vectoral plane is required, the privileged plane of a Compass canbe used. During movement of a GUI Compass, the shape of the cursor andthe Compass can change to aid in anchoring the Compass. As the Compassis dragged an Axis 1310 can be displayed as well as a current privilegedplane 1320. By default the Z axis can be displayed in the X-Y plane.Other defaults can be specified and predetermined by a user. The shapeof a cursor 1330 can also change while it is dragging the Compass.

Release of a mouse button used to drag and drop the Compass can causethe Compass to snap onto an object in closed proximity and therebyselected. FIG. 14 illustrates the Compass attached or anchored to theplanar patch 316. Visual indication that the Compass is attached oranchored can also be utilized. For example, a color change can takeplace as the Compass is attached to an object. A default color such aslight green can be used or other user defined colors.

In one embodiment, a user can change the privileged plane from, forexample, XY to XZ or YZ. In one embodiment, the privileged plane can bechanged by selecting and object such as the plane or patch 316 andactivating a control point icon or other user interactive device tocause control points 1520 to appear on the plane or patch 316.

Referring now to FIG. 15, manipulators 1510 can be programmed to appearin conjunction with the selected object, the plane or patch 316. Bydefault the manipulators 1510 can be oriented in the same plane as thecurrent privileged plane of the Compass.

In another embodiment, an option accessible for example with acontextual menu can force a privileged plane to be the most visible ofthe three planes of the Compass. Using this option, as a user changes apoint of view of the model displayed, the privileged plane switches.

Referring now to FIG. 16, the Compass can be dragged onto the plane of apatch 316 and aligned in the direction specifying a newly desiredprivilege plane. As the Compass is dropped onto the patch by a cursor,the Compass can detect the orientation of the patch.

Referring now to FIG. 17, the Compass can be oriented according to theorientation of a patch 316. In one embodiment, the Compass will retainthe orientation of this corresponding privilege plane as it is movedaway from the directed object 316. In another embodiment, a user canpoint to the Compass and right click with a pointing device.

Referring now to FIG. 18, a right click can display a textual menuwherein in the textual menu includes a command to make the respectiveplanes the privileged planes. The manipulators will orient in the planeselected as the privilege plane.

FIG. 19 illustrates the YZ plane selected as the privileged plane forthe Compass 100. The manipulators 1510 responsive to the change to theprivilege plane are now located in the YZ plane.

FIGS. 20-22 illustrate an additional example of a knowledge basedaction. Object translation is illustrated in the example, however othertypes of movement including rotation and planar movement can besimilarly accomplished. Referring now to FIG. 20, a GUI compass 100 isanchored to a rectangular patch 2001 at a point 2010 along an edge 2011.The cursor 2103 is positioned on the X axis to indicate that the X axishas been selected. The object scene 220 also contains a secondrectangular patch 2002. Referring now to FIG. 21, the program uses aknowledge based routine to determine a point 2105 at the border of anedge 2104 of the second rectangular patch 2002, that is nearest to acursor 2103. The point is determined in response to a user depressing amouse button, wherein the mouse is controlling the cursor. In additionto the point being determined, a line 2102 normal to the X axis 2101 isextended by the routine to the X axis 2101.

Referring now to FIG. 22, release of the mouse button causes translationof the first rectangular patch 2001 along the X axis of the compass 100and aligns the line 2102 extended from point 2105 with the anchor point2010 of the compass 100, wherein the compass is anchored to the firstpatch.

Referring now to FIG. 23, an alternate method of effecting translationof the first rectangular patch 2001 that does not utilize knowledgebased actions is illustrated. The Compass 100 is anchored at an anchorpoint 2010 and the user can grasp the Compass by holding down a mousebutton while a cursor 2310 is positioned on the Compass 100. The usercan then drag the Compass 100 along the X axis causing the firstrectangular patch 2001 to translate along the X axis. A dotted line 2301extending along the X axis can indicate the direction of movement. Anumerical value 2302 can indicate the distance along the X axis theCompass 100 has traveled.

Referring now to FIG. 24, a user can visually align the anchor point2010 with the edge 2104 of the second rectangular patch 2002 and releasethe mouse button causing the translational movement to stop.Non-knowledge based movement does not include a programmed confirmationof the alignment of the two objects. In the example illustrated,alignment is as accurate as the users perception. Knowledge basedactions can have predetermined accuracy programmed in.

Referring to FIG. 25 physical resources of a computer system 2500 aredepicted. The computer 2500 has a central processor 2501 connected to aprocessor host bus 2502 over which it provides data, address and controlsignals. The processors 2501 may be any conventional general purposesingle-chip or multi-chip microprocessor such as a Pentium® seriesprocessor, A K6 processor, a MIPS® processor, a Power PC® processor oran ALPHA® processor. In addition, the processor 2501 may be anyconventional special purpose microprocessor such as a digital signalprocessor or a graphics processor. The microprocessor 2501 can haveconventional address, data, and control lines coupling it to a processorhost bus 2502.

The computer 2500 can include a system controller 2503 having anintegrated RAM memory controller 2504. The system controller 2503 can beconnected to the host bus 2502 and provide an interface to random accessmemory 2505. The system controller 2503 can also provide host bus toperipheral bus bridging functions. The controller 2503 can therebypermit signals on the processor host bus 2502 to be compatibly exchangedwith signals on a primary peripheral bus 2510. The peripheral bus 2510may be, for example, a Peripheral Component Interconnect (PCI) bus, anIndustry Standard Architecture (ISA) bus, or a Micro-Channel bus.Additionally, the controller 2503 can provide data buffering and datatransfer rate matching between the host bus 102 and peripheral bus 2510.The controller 2503 can thereby allow, for example, a processor 2501 tointerface to a PCI bus 2510 having a data path differing in data pathbit width, clock speed, or data transfer rate.

Accessory devices including, for example, a hard disk drive controlinterface 2511 coupled to a hard disk drive 2514, a video displaycontroller 2512 coupled to a video display 2515, and a keyboard andmouse controller 2513 can be coupled to a peripheral bus 2510 andcontrolled by the processor 2501. The computer system can include aconnection to a computer system network, an intranet or an internet.Data and information may be sent and received over such a connection.

The computer 2500 can also include nonvolatile ROM memory 2507 to storebasic computer software routines. ROM 2507 may include alterable memory,such as EEPROM (Electronically Erasable Programmable Read Only Memory),to store configuration data. BIOS routines 2523 can be included in ROM2507 and provide basic computer initialization, systems testing, andinput/output (I/O) services. The BIOS 2523 can also include routinesthat allow an operating system to be “booted” from the disk 2513.Examples of high-level operating systems are, the Microsoft Windows 98™,Windows NT™, UNIX, LINUX, the Apple MacOS ™ operating system, or otheroperating system.

An operating system may be fully loaded in the RAM memory 2505 or mayinclude portions in RAM memory 2505 , disk drive storage 2514, orstorage at a network location. The operating system can providefunctionality to execute software applications, software systems andtools of software systems. Software functionality can access the videodisplay controller 2512 an other resources of the computer system 2500to provide two dimensional (2-D) and three dimensional (3-D) models onthe video computer display 2515.

The invention may be implemented in digital electronic circuitry, or incomputer hardware, firmware, software, or in combinations of them.Apparatus of the invention may be implemented in a computer programproduct tangibly embodied in a machine-readable storage device forexecution by a programmable processor; and method steps of the inventionmay be performed by a programmable processor executing a program ofinstructions to perform functions of the invention by operating on inputdata and generating output.

The invention may advantageously be implemented in one or more computerprograms that are executable on a programmable system including at leastone programmable processor coupled to receive data and instructionsfrom, and to transmit data and instructions to, a data storage system,at least one input device, and at least one output device. Each computerprogram may be implemented in a high-level procedural or object-orientedprogramming language, or in assembly or machine language if desired; andin any case, the language may be a compiled or interpreted language.

Generally, a processor will receive instructions and data from aread-only memory and/or a random access memory. Storage devices suitablefor tangibly embodying computer program instructions and data includeall forms of nonvolatile memory, including by way of examplesemiconductor memory devices, such as EPROM, EEPROM, and flash memorydevices; magnetic disks such as internal hard disks and removable disks;magneto-optical disks; and CD-ROM disks. Any of the foregoing may besupplemented by, or incorporated in, specially-designed ASICs(application-specific integrated circuits).

A number of embodiments of the present invention have been described. Itwill be understood that various modifications may be made withoutdeparting from the spirit and scope of the invention. Therefore, otherimplementations are within the scope of the following claims.

What is claimed is:
 1. In a computer aided design system, acomputer-implemented method of acting on a modeled object, the methodcomprising: embedding a software tool in a three dimensional modelingspace, the software tool being represented as a three dimensional objectcomprising a plurality of user interactive areas wherein a first one ofthe interactive areas is arranged in a first plane of the threedimensional space and a second one of the interactive areas is arrangedin a second planes of the three dimensional space, the first and secondplanes being different; associating each interactive area with afunction for acting upon the object and manipulating the first userinteractive area of the software tool to perform the function associatedwith the first interactive area on the object.
 2. The method of claim 1wherein the three dimensional modeling space contains one or moreobjects and the function is performed on all of the objects.
 3. Themethod of claim 1 wherein the function performed is responsive toknowledge based criteria relating to the object on which the function isperformed.
 4. The method of claim 1 additionally comprising the stepsof: displaying a second software tool at a position in the threedimensional modeling space different from a position of the softwaretool; and controlling a user interactive area of the software tool withthe second software tool.
 5. The method of claim 1 wherein: manipulatingthe first user interactive area comprises repositioning the first userinteraction area in the first plane; and performing the function on theobject comprises determining a motion of the object in the threedimensional space based on the repositioning of the first userinteractive area in the first plane.
 6. The method of claims 5 wherein:repositioning the first user interaction area comprises rotating thefirst user interactive area around an axis normal to the first plane;and determining a motion of the object comprises determining a rotationof the object around a second axis normal to the first plane.
 7. Themethod of claim 6 wherein determining the rotation of the objectcomprises determining an arc of rotation in proportion to the rotationof the first user interactive area.
 8. The method of claim 1 wherein thefirst and the second planes are orthogonal to each other.
 9. A method ofacting upon an object displayed on a computer screen, the methodcomprising: embedding a software tool comprising multiple userinteractive areas in an object scene; associating each interactive areacomprising the software tool with a function for acting upon the object;activating a user interactive area of the software tool; performing thefunction associated with the activated interactive area on the object;moving the software tool off the object scene; and displaying anindividual visual representation associated with a function comprisingthe software tool, wherein the representation forms a user interactivedevice responsive, to activation by performing the function associatedit.
 10. The method of claim 9 additionally comprising the step of movingthe individual visual representations back into the object scene andmorphed into the software tool.
 11. The method of claim 1 additionallycomprising the steps of: manipulating the second user interactive areaof the software tool; and changing a three dimensional orientation ofthe software tool with respect to the objects in the object sceneresponsive to the manipulation of the second user interactive area. 12.The method of claim 1 additionally comprising the steps of: selectingone or more objects in the object scene; and performing the functionassociated with the first interactive area on the objects selected. 13.A three dimensional modeling system comprising: a processor coupled to adata storage device comprising instructions to configure the processorto: display a representation of a software tool embedded in a threedimensional modeling space, the software tool being represented as athree dimensional object comprising a plurality of user interactiveareas wherein a first one of the interactive areas is arranged in afirst plane of the three dimensional space and a second one of theinteractive areas is arranged in a second planes of the threedimensional space, the first and second planes being different;associate each interactive area with a function for acting upon theobject; and receive input from a user to manipulate the first userinteractive area of the software tool; perform the function associatedwith the first interactive area on the object in response to the inputto manipulate the first user interactive area.
 14. In a computer aideddesign system, a computer-implemented method of acting on a modeledobject, the method comprising: embedding a software tool as an object ina three dimensional modeling space, the software tool comprising aplurality of user interactive areas configured such that a first one ofthe interactive areas can be manipulated in a plane of the threedimensional modeling space that is different from a plane in which asecond one of the user interactive areas is manipulated, and whereineach area is associated with one of a plurality of functions for actingupon other objects in the modeling space; and manipulating a first userinteractive area of the software tool to perform the function associatedwith the first interactive area on a first modeled object.
 15. Themethod of claim 14 wherein the modeling space contains one or moremodeled objects and the function is performed on all of the modeledobjects.
 16. The method of claim 15 further comprising: selecting asecond one of the modeled objects; and associating a different one ofthe plurality of functions with the first interactive area uponselection of the second modeled object.
 17. In a computer aided designsystem, a computer-implemented method of acting on a modeled object, themethod comprising: embedding a software tool as an object in a modelingspace, the software tool comprising a plurality of user interactiveareas, each area being associated with one of a plurality functions foracting upon other objects in the modeling space; and manipulating afirst user interactive area of the software tool to perform the functionassociated with the first interactive area on a first modeled object;wherein, manipulating the first user interactive area comprises changingthe orientation of the software tool, and performing the functionassociated with the first interactive area on the first modeled objectcomprises making a change to the orientation of the first modeled objectthat corresponds to the change to the orientation of the software tool.18. In a computer aided design system, a computer-implemented method ofacting on a modeled object, the method comprising: embedding a softwaretool as an object in a modeling space, the software tool comprising aplurality of user interactive areas, each area being associated with oneof a plurality functions for acting upon other objects in the modelingspace; manipulating a first user interactive area of the software toolto perform the function associated with the first interactive area on afirst modeled object; selecting a second one of the modeled objects;associating a different one of the plurality of functions with the firstinteractive area upon selection of the second modeled object; andwherein associating a different one of the functions comprises applyingknowledge based criteria to determine change in the function associatedwith the first interactive area based upon modeled object selection. 19.In a computer aided design system, a computer-implemented method ofacting on a modeled object, the method comprising: embedding a softwaretool as an object in a modeling space, the software tool comprising aplurality of user interactive areas, each area being associated with oneof a plurality functions for acting upon other objects in the modelingspace; manipulating a first user interactive area of the software toolto perform the function associated with the first interactive area on afirst modeled object; selecting a second one of the modeled objects; andaltering a shape of the software tool based on knowledge based criteriadetailing functions that can be performed on the second modeled object.20. A computer-implemented method of acting on a modeled object, themethod comprising: displaying on an output device a three dimensionalworkspace comprising a plurality of objects; displaying a control toolas an object logically embedded in the workspace with said plurality ofobjects, the control tool comprising a plurality of control surfacesthat can be manipulated based on user input to alter properties of afirst selected one of the plurality of objects, wherein a first one ofthe control surfaces can be manipulated in a first plane of the threedimensional workspace and a second one of the control surfaces can bemanipulated in a second plane of the three dimensional surface, and thefirst and second planes are different; and changing appearance of thecontrol tool upon selection of a second one of the plurality ofworkspace objects, said changing of appearance being based on adifference in user-alterable properties of said first object compared tosaid second object.
 21. A computer-implemented method of acting on amodeled object, the method comprising: displaying on an output device aworkspace comprising a plurality of objects; displaying a control toolas an object logically embedded in the workspace with said plurality ofobjects, the control tool comprising a plurality of control surfacesthat can be manipulated based on user input to alter properties of afirst selected one of the plurality of objects; and changing appearanceof the control tool upon selection of a second one of the plurality ofworkspace objects, said changing of appearance being based on adifference in user-alterable properties of said first object compared tosaid second object; wherein changing appearance comprising changing ashape of a first control surface.
 22. The method of claim 20 furthercomprising changing the display of the control tool from said display asan object logically embedded in the workspace to display of the controltool as an object that is logically separate from the plurality ofworkspace objects.
 23. The method of claim 22 wherein the workspacecomprises a first graphical user interface window and said objectlogically separate from the plurality of workspace objects comprises agraphical user interface object selected from the group consisting of anicon-based toolbar, a dialog box, a second graphical user interfacewindow, and a framed display area.
 24. The method of claim 23 whereinsaid changing of the display of the control tool occurs upon selectionof the control tool and dragging of the control tool to a toolbar areaof the first graphical user interface window.